﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;

namespace planetExpressLib
{
    public class oficinaCAD
    {
        private List<oficinaEN> allOficinas;
        string cadena;
     
        public oficinaCAD()
        {
            allOficinas = new List<oficinaEN>();
            cadena = ConfigurationManager.ConnectionStrings["DatabaseConnection"].ToString();
        }

        public void insertar(oficinaEN oficina)
        {
            SqlConnection c = new SqlConnection(cadena);

            try
            {
                c.Open();

                string sentencia = "INSERT INTO OFICINA (Pais, Provincia, Ciudad, Direccion, Telefono, Email, Horario) VALUES('";
                sentencia += oficina.Pais + "', '";
                sentencia += oficina.Provincia + "', '";
                sentencia += oficina.Ciudad + "', '";
                sentencia += oficina.Direccion + "', '";
                sentencia += oficina.Telefono + "', '";
                sentencia += oficina.Email + "', '";
                sentencia += oficina.Horario + "')";

                SqlCommand com = new SqlCommand(sentencia, c);

                com.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                c.Close();
            }
        }

        public void actualizar(oficinaEN oficina)
        {
            SqlConnection c = new SqlConnection(cadena);

            try
            {
                c.Open();

                string sentencia = "UPDATE RESERVA SET ";
                sentencia += "Pais = " + oficina.Pais;
                sentencia += ", Provincia = " + oficina.Provincia;
                sentencia += ",  Ciudad = " + oficina.Ciudad;
                sentencia += ",  Direccion = " + oficina.Direccion;
                sentencia += ",  Telefono = " + oficina.Telefono;
                sentencia += ",  Email = " + oficina.Email;
                sentencia += ",  Horario = " + oficina.Horario;
                sentencia += "WHERE Id = " + oficina.IdOficina;

                SqlCommand com = new SqlCommand(sentencia, c);

                com.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                c.Close();
            }
        }

        public void borrar(int id)
        {
            SqlConnection c = new SqlConnection(cadena);

            try
            {
                c.Open();

                string sentencia = "DELETE FROM OFICINA WHERE Id = " + id;

                SqlCommand com = new SqlCommand(sentencia, c);

                com.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                c.Close();
            }
        }

        public oficinaEN readID(int id)
        {
            oficinaEN oficina = null;

            SqlConnection c = new SqlConnection(cadena);
            SqlDataReader dr = null;

            try
            {
                c.Open();

                string sentencia = "SELECT * FROM OFICINA WHERE Id = " + id;

                SqlCommand com = new SqlCommand(sentencia, c);

                dr = com.ExecuteReader();

                if (dr.Read())
                {
                    /*
                    oficina.IdOficina = (int)dr["Id"];
                    oficina.Pais = dr["Pais"].ToString();
                    oficina.Provincia = dr["Provincia"].ToString();
                    oficina.Ciudad = dr["Ciudad"].ToString();
                    oficina.Telefono = (int)dr["Telefono"];
                    oficina.Email = dr["Email"].ToString();
                    oficina.Horario = dr["Horario"].ToString();*/
                    //TODO: CAMBIAR EL TIPO AL MEJOR FORMATO
                }

            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                dr.Close();
                c.Close();
            }

            return oficina;
        }

        public List<oficinaEN> readAll()
        {
            SqlConnection c = new SqlConnection(cadena);
            SqlDataReader dr = null;
            oficinaEN nueva = null;

            try
            {
                c.Open();

                string sentencia = "SELECT * FROM OFICINA";

                SqlCommand com = new SqlCommand(sentencia, c);

                dr = com.ExecuteReader();

                while (dr.Read())
                {
 /*                   nueva.IdReserva = (int)dr["Id"];
                    //TODO: CAMBIAR EL TIPO AL MEJOR FORMATO
                    nueva.Cliente = (clienteEN)dr["Cliente"];
                    nueva.Destino = (planetaEN)dr["Destino"];
                    nueva.Oficina = (oficinaEN)dr["Oficina"];
                    nueva.Fecha = (fechaEN)dr["Fecha"];
                    nueva.Hora = dr["Hora"].ToString();
                    nueva.PrecioTotal = (float)dr["PrecioTotal"];
                    nueva.Tipo = (tipoViajeEN)dr["Tipo"];

   */                 allOficinas.Add(nueva);
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                dr.Close();
                c.Close();
            }

            return allOficinas;
        }

    }
}